﻿using System.Collections.Generic;
using System.ServiceModel;

using SIMA.Entities;
using SIMA.Core.Enums;
using SIMA.Core.EventArgs;

namespace SIMA.Interfaces
{
    [ServiceContract(CallbackContract=typeof(IEquipoCallback), SessionMode=SessionMode.Required)]
    public interface IEquipo
    {
        [OperationContract]
        void InsertEquipo(T_C_Equipo equipo);

        [OperationContract]
        void UpdateEquipo(T_C_Equipo equipoToUpdate, T_C_Equipo equipoUpdated);

        [OperationContract]
        void DeleteEquipo(T_C_Equipo equipo);

        [OperationContract]
        void SelectSpecilized(string query, CommandType queryType);

        [OperationContract]
        bool Subscribe();

        [OperationContract]
        bool Unsubscribe();

    }

    [ServiceContract]
    public interface IEquipoCallback
    {
        [OperationContract(IsOneWay = true)]
        void OnInserted(InsertedEventArgs args);

        [OperationContract(IsOneWay = true)]
        void OnUpdated(UpdatedEventArgs args);

        [OperationContract(IsOneWay = true)]
        void OnDeleted(DeletedEventArgs args);

        [OperationContract(IsOneWay = true)]
        void OnSelected(List<T_C_Equipo> result);

        [OperationContract(IsOneWay = true)]
        void OnError(FailedEventArgs exceptionArgs);
    }
}
